const isProduction = process.env.NODE_ENV !== 'development';
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const CompressionPlugin = require("compression-webpack-plugin");

console.log("isProduction",isProduction)

module.exports = {
    /* chainWebpack: config => {
         // ============压缩图片 start============
         config.module
             .rule('images')
             .use('image-webpack-loader')
             .loader('image-webpack-loader')
             .options({ bypassOnDebug: true })
             .end()
         // ============压缩图片 end============
     },*/
    configureWebpack: config => {
        if (isProduction) {
            // 代码压缩
            config.plugins.push(
                /*new UglifyJsPlugin({
                    uglifyOptions: {
                        //生产环境去除console等信息
                        compress: {
                            warnings: false, // 若打包错误，则注释这行
                            drop_debugger: true,//是否移除debugger
                            drop_console: true,
                            pure_funcs: ['console.log']//移除console
                        }
                    },
                    sourceMap: false,
                    parallel: true
                }),*/
                new CompressionPlugin({
                    filename: "[path].gz[query]",
                    algorithm: "gzip",
                    test: /\.js$|\.html$|\.css/,
                    threshold: 10240, // 只有大小大于该值的资源会被处理 10240
                    minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
                    deleteOriginalAssets: false, // 删除原文件
                })
            );
            // 公共代码抽离
            config.optimization = {
                /*splitChunks: {
                    cacheGroups: {
                        vendor: {
                            chunks: 'all',
                            test: /node_modules/,
                            name: 'vendor',
                            minChunks: 1,
                            maxInitialRequests: 5,
                            minSize: 0,
                            priority: 100
                        },
                        common: {
                            chunks: 'all',
                            test: /[\\/]src[\\/]js[\\/]/,
                            name: 'common',
                            minChunks: 2,
                            maxInitialRequests: 5,
                            minSize: 0,
                            priority: 60
                        },
                        styles: {
                            name: 'styles',
                            test: /\.(sa|sc|c)ss$/,
                            chunks: 'all',
                            enforce: true
                        },
                        runtimeChunk: {
                            name: 'manifest'
                        }
                    }
                },*/
                runtimeChunk: 'single',
                splitChunks: {
                    chunks: 'all',
                    maxInitialRequests: Infinity,
                    minSize: 20000,
                    cacheGroups: {
                        vendor: {
                            test: /[\\/]node_modules[\\/]/,
                            name (module) {
                                // get the name. E.g. node_modules/packageName/not/this/part.js
                                // or node_modules/packageName
                                const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
                                // npm package names are URL-safe, but some servers don't like @ symbols
                                return `npm.${packageName.replace('@', '')}`
                            }
                        }
                    }
                }
            }
            ,config.externals = {
                //'vue': 'Vue',
                //'vue-router': 'VueRouter',
                //'moment': 'moment',
                //'echarts':'echarts',
                //'element-ui': 'ELEMENT',
            }
        }
        //config.output.library = `vueApp`;
        //config.output.libraryTarget = 'umd';
    },

    publicPath: "/",// 公共路径(必须有的)
    outputDir: "dist",// 输出文件目录
    assetsDir: "assets", // 静态资源存放的文件夹(相对于ouputDir)
    lintOnSave:false, // eslint-loader 是否在保存的时候检查(果断不用，这玩意儿我都没装)
    productionSourceMap: false, // 不需要生产环境的设置false可以减小dist文件大小，加速构建
    runtimeCompiler: true,

    devServer: {
        host:'localhost',
        port: 8808, // 端口
        disableHostCheck:true,
        proxy: {
            '/admin-service': {
                target: 'http://localhost:8088/', // 接口的域名
                //target: 'http://8.142.7.124:8090/', // 接口的域名
                // secure: false,  // 如果是https接口，需要配置这个参数
                changeOrigin: true, // 如果接口跨域，需要进行这个参数配置
                pathRewrite: {
                    '^/admin-service': '/'
                    //'^/api': '/api'   // 这种接口配置出来     http://XX.XX.XX.XX:8083/api/login
                    //'^/api': '/' 这种接口配置出来     http://XX.XX.XX.XX:8083/login
                }

            },
            '/erp-service': {
                target: 'http://localhost:8090/', // 接口的域名
                //target: 'http://8.142.7.124:8090/', // 接口的域名
                // secure: false,  // 如果是https接口，需要配置这个参数
                changeOrigin: true, // 如果接口跨域，需要进行这个参数配置
                pathRewrite: {
                    '^/erp-service': '/erp-service'
                    //'^/api': '/api'   // 这种接口配置出来     http://XX.XX.XX.XX:8083/api/login
                    //'^/api': '/' 这种接口配置出来     http://XX.XX.XX.XX:8083/login
                }

            },
            '/erp-view/assets': {
                target: 'http://localhost:8808/', // 接口的域名
                //target: 'http://8.142.7.124:8090/', // 接口的域名
                // secure: false,  // 如果是https接口，需要配置这个参数
                changeOrigin: true, // 如果接口跨域，需要进行这个参数配置
                pathRewrite: {
                    '^/erp-view/assets': '/assets'
                    //'^/api': '/api'   // 这种接口配置出来     http://XX.XX.XX.XX:8083/api/login
                    //'^/api': '/' 这种接口配置出来     http://XX.XX.XX.XX:8083/login
                }

            }
        },
    }
    /*configureWebpack: {
        output: {
            //资源打包路径
            library: 'vueApp',
            libraryTarget: 'umd'
        }
    },*/
}
